/**
 * 在这里定义和用户相关的路由处理函数，供 /router/user.js 模块进行调用
 */
const db = require('../db/index')
// 引入对密码加密对模块
const bcrypt = require('bcryptjs')
exports.regUser = (req, res) => {

    let {
        username,
        password
    } = req.body
    if (!username || !password) {
        // return res.send({status:1,msg:'用户名或密码不能为空'})
        return res.cc('用户名或密码不能为空')
    }
    // 定义sql语句
    const sql = 'select * from ev_users where username=?'
    // 执行sql语句
    db.query(sql, [username], (err, results) => {

        if (err) {
            //  return res.send({status:1,msg:err.message})
            return res.cc(err)
        }
        // 用户名被占用
        if (results.length > 0) {
            //  return res.send({status:1,msg:'用户名已被占用,请更换用户名'})
            return res.cc('用户名已被占用,请更换用户名')
        }
        // 用户名可以使用
        // 对用户的密码,进行 bcrype 加密，返回值是加密之后的密码字符串
        password = bcrypt.hashSync(password, 10)
        const sql = 'insert into ev_users set ?'
        db.query(sql, {
            username,
            password
        }, (err, results) => {
            if (results.affectedRows !== 1) {
                //  return res.send({status:1,msg:'注册失败'})
                return res.cc('注册失败')
            }
            //  res.send({status:0,msg:'注册成功！'})
            res.cc('注册成功', 0)
        })
    })

}
exports.login = (req, res) => {
    const userinfo = req.body
    const sql = 'select * from ev_users where username=?'
    db.query(sql, userinfo.username, (err, results) => {
        if (err) return res.cc(err)
        if (results.length !== 1) return res.cc('用户名不存在')
        // 比对用户提交的密码和数据库的密码
        const compareResult = bcrypt.compareSync(userinfo.password, results[0].password)

        if (!compareResult) return res.cc('密码错误')

        // 登录成功
        // 通过 ES6 的高级语法，快速剔除 密码 和 头像 的值：
        const user = {...results[0],password:'',user_pic:''}
        console.log('user', user)
        // 生成token字符串
        const jwt =  require('jsonwebtoken')
        const config = require('../config')

       const tokenStr =  jwt.sign(user,config.jwtSecretKey,{
            expiresIn:'10h' // token有效期为10小时
        })

        res.send({
            status:0,
            msg:'登录成功',
            data:user,
            token:'Bearer ' + tokenStr
        })



    })

}